<?php
/**
 * @name Classe EventoAD
 *
 * @author   ()
 *
 */
class EventoAD extends Conexao
{
	/**
	 * @method Pesquisar
	 *
	 * @param object $Evento
	 * @param str $ordenacao
	 * @param int $limite
	 * @param int $pagina
	 * @param str $complemento
	 *
	 * @return  array
	 */
	public function Pesquisar($Evento = NULL, $ordenacao = NULL, $limite = NULL, $pagina = 1,$complemento = NULL)
	{

		$SQL = "SELECT ";
		$SQL .= PREFIXO_TABELA . "evento.* ";
		
		if ( $Evento->MunicipioID != "" )
			$SQL .= ", " . PREFIXO_TABELA . "dmmunicipio.Nome AS Municipio ";

		$SQL .= "FROM ";
		$SQL .= PREFIXO_TABELA . "evento ";
		
		if ( $Evento->MunicipioID != "" )
		{
			$SQL .= "JOIN local ON local.LocalID = " . PREFIXO_TABELA . "evento.LocalID ";
			$SQL .= "JOIN  " . PREFIXO_TABELA . "dmmunicipio ON local.MunicipioID =  " . PREFIXO_TABELA . "dmmunicipio.MunicipioID ";
		}

		$SQL .= $this->ObterClausulaWhere($Evento);

		if ($complemento !== NULL)
		{
			$SQL .= " ".$complemento." ";
		}

		if ($ordenacao !== NULL)
		{
			$SQL .= " ORDER BY ".$ordenacao." ";
		} 

		if (is_numeric($limite))
		{
			$SQL .= " LIMIT ".(($pagina-1)*$limite).", ".$limite;
		}

		$resultado = $this->Executar($SQL);

		$colecaoEvento = array();

		if (!$resultado->EOF)
		{
			while (!$resultado->EOF)
			{
				$contador = 0;
				$retornoEvento = new stdClass();

				$retornoEvento->EventoID										 = $resultado->fields($contador++);
				$retornoEvento->Nome											 = $resultado->fields($contador++);
				$retornoEvento->CategoriaID										 = $resultado->fields($contador++);
				$retornoEvento->DataInicio										 = $resultado->fields($contador++);
				$retornoEvento->DataFim											 = $resultado->fields($contador++);
				$retornoEvento->HoraInicio										 = $resultado->fields($contador++);
				$retornoEvento->HoraFim											 = $resultado->fields($contador++);
				$retornoEvento->LocalID											 = $resultado->fields($contador++);
				$retornoEvento->Duracao											 = $resultado->fields($contador++);
				$retornoEvento->DescricaoGeral									 = $resultado->fields($contador++);
				$retornoEvento->DataInclusao									 = $resultado->fields($contador++);
				$retornoEvento->UsuarioID										 = $resultado->fields($contador++);
				$retornoEvento->ClassificacaoEtaria								 = $resultado->fields($contador++);
				$retornoEvento->Elenco											 = $resultado->fields($contador++);
				$retornoEvento->EquipeDirecao									 = $resultado->fields($contador++);
				$retornoEvento->HoraAbertura									 = $resultado->fields($contador++);
				$retornoEvento->Municipio										 = $resultado->fields($contador++);

				array_push($colecaoEvento, $retornoEvento);

				$resultado->MoveNext();
			}
		}

		return $colecaoEvento;

	}


	/**
	 * @method Obter
	 *
	 * @param object $Evento
	 * @param string $ordenacao
	 * @param object $complemento
	 *
	 * @return  object
	 */
	public function Obter($Evento, $ordenacao = NULL, $complemento = NULL)
	{
		$retorno = false;

		$SQL = "SELECT ";
		$SQL .= PREFIXO_TABELA . "evento.* ";
		$SQL .= "FROM ";
		$SQL .= PREFIXO_TABELA . "evento ";

		$SQL .= $this->ObterClausulaWhere($Evento);

		if ($complemento !== NULL)
		{
			$SQL .= " ".$complemento." ";
		}

		if ($ordenacao !== NULL)
		{
			$SQL .= " ORDER BY ".$ordenacao." ";
		} 

		$resultado = $this->Executar($SQL);

		if (!$resultado->EOF)
		{
			$contador = 0;
			$retornoEvento = new stdClass();
			$retornoEvento->EventoID										 = $resultado->fields($contador++);
			$retornoEvento->Nome											 = $resultado->fields($contador++);
			$retornoEvento->CategoriaID										 = $resultado->fields($contador++);
			$retornoEvento->DataInicio										 = $resultado->fields($contador++);
			$retornoEvento->DataFim											 = $resultado->fields($contador++);
			$retornoEvento->HoraInicio										 = $resultado->fields($contador++);
			$retornoEvento->HoraFim											 = $resultado->fields($contador++);
			$retornoEvento->LocalID											 = $resultado->fields($contador++);
			$retornoEvento->Duracao											 = $resultado->fields($contador++);
			$retornoEvento->DescricaoGeral									 = $resultado->fields($contador++);
			$retornoEvento->DataInclusao									 = $resultado->fields($contador++);
			$retornoEvento->UsuarioID										 = $resultado->fields($contador++);
			$retornoEvento->ClassificacaoEtaria								 = $resultado->fields($contador++);
			$retornoEvento->Elenco											 = $resultado->fields($contador++);
			$retornoEvento->EquipeDirecao									 = $resultado->fields($contador++);
			$retornoEvento->HoraAbertura									 = $resultado->fields($contador++);
			$retornoEvento->Ativo											 = $resultado->fields($contador++);

			$retorno = $retornoEvento;
		}

		return $retorno;

	}


	/**
	 * @method Existir
	 *
	 * @param object $Evento
	 * @param string $ordenacao
	 * @param object $complemento
	 *
	 * @return  boolean
	 */
	public function Existir($Evento, $ordenacao = NULL, $complemento = NULL)
	{

		$SQL = "SELECT COUNT(evento.EventoID) AS Registros FROM " . PREFIXO_TABELA . "evento";

		$SQL .= $this->ObterClausulaWhere($Evento);

		if ($complemento !== NULL)
		{
			$SQL .= " ".$complemento." ";
		}
		if ($ordenacao !== NULL)
		{
			$SQL .= " ORDER BY ".$ordenacao." ";
		} 

		$resultado = $this->Executar($SQL);

		$registros = intval($resultado->fields("Registros"));

		if ($registros > 0)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}


	/**
	 * @method ContarRegistros
	 *
	 * @param object $Evento
	 * @param string $ordenacao
	 * @param object $complemento
	 *
	 * @return  boolean
	 */
	public function ContarRegistros($Evento, $ordenacao = NULL, $complemento = NULL)
	{

		$SQL = "SELECT COUNT(evento.EventoID) AS Registros FROM " . PREFIXO_TABELA . "evento";

		$SQL .= $this->ObterClausulaWhere($Evento);

		if ($complemento !== NULL)
		{
			$SQL .= " ".$complemento." ";
		}

		if ($ordenacao !== NULL)
		{
			$SQL .= " ORDER BY ".$ordenacao." ";
		} 

		$resultado = $this->Executar($SQL);

		$registros = intval($resultado->fields("Registros"));

		return $registros;
	}


	/**
	 * @method Excluir
	 *
	 * @author   ()
	 * @param object $Evento
	 *
	 * @return  boolean
	 *
	 * Gerado autom�ticamente atrav�s do Gerador
	 *
	 */
	public function Excluir($Evento)
	{
		$SQL = "DELETE FROM " . PREFIXO_TABELA . "evento";

		$SQL .= $this->ObterClausulaWhere($Evento);

		$resultado = $this->Executar($SQL);

		return $resultado;
	}
	/**
	 * @method Salvar
	 *
	 * @author   ()
	 * @param object $Evento
	 *
	 * @return  object
	 */
	public function Salvar($Evento)
	{
		if($Evento->EventoID === NULL)
		{
			$SQL = "INSERT INTO " . PREFIXO_TABELA . "evento
				(";
				if($Evento->Nome !== NULL)
				{
					$SQL .= "Nome,";
				}
				if($Evento->CategoriaID !== NULL)
				{
					$SQL .= "CategoriaID,";
				}
				if($Evento->DataInicio !== NULL)
				{
					$SQL .= "DataInicio,";
				}
				if($Evento->DataFim !== NULL)
				{
					$SQL .= "DataFim,";
				}
				if($Evento->HoraInicio !== NULL)
				{
					$SQL .= "HoraInicio,";
				}
				if($Evento->HoraFim !== NULL)
				{
					$SQL .= "HoraFim,";
				}
				if($Evento->LocalID !== NULL)
				{
					$SQL .= "LocalID,";
				}
				if($Evento->Duracao !== NULL)
				{
					$SQL .= "Duracao,";
				}
				if($Evento->DescricaoGeral !== NULL)
				{
					$SQL .= "DescricaoGeral,";
				}
				if($Evento->DataInclusao !== NULL)
				{
					$SQL .= "DataInclusao,";
				}
				if($Evento->UsuarioID !== NULL)
				{
					$SQL .= "UsuarioID,";
				}
				if($Evento->ClassificacaoEtaria !== NULL)
				{
					$SQL .= "ClassificacaoEtaria,";
				}
				if($Evento->Elenco !== NULL)
				{
					$SQL .= "Elenco,";
				}
				if($Evento->EquipeDirecao !== NULL)
				{
					$SQL .= "EquipeDirecao,";
				}
				if($Evento->HoraAbertura !== NULL)
				{
					$SQL .= "HoraAbertura,";
				}
				if($Evento->Ativo !== NULL)
				{
					$SQL .= "Ativo,";
				}
				$SQL = substr($SQL,0,-1);
				$SQL .= ") VALUES (";
				if($Evento->Nome !== NULL)
				{
					$SQL .= "'".$Evento->Nome."',";
				}
				if($Evento->CategoriaID !== NULL)
				{
					$SQL .= $Evento->CategoriaID.",";
				}
				if($Evento->DataInicio !== NULL)
				{
					$SQL .= "'".$Evento->DataInicio."',";
				}
				if($Evento->DataFim !== NULL)
				{
					$SQL .= "'".$Evento->DataFim."',";
				}
				if($Evento->HoraInicio !== NULL)
				{
					$SQL .= $Evento->HoraInicio.",";
				}
				if($Evento->HoraFim !== NULL)
				{
					$SQL .= $Evento->HoraFim.",";
				}
				if($Evento->LocalID !== NULL)
				{
					$SQL .= $Evento->LocalID.",";
				}
				if($Evento->Duracao !== NULL)
				{
					$SQL .= "'".$Evento->Duracao."',";
				}
				if($Evento->DescricaoGeral !== NULL)
				{
					$SQL .= $Evento->DescricaoGeral.",";
				}
				if($Evento->DataInclusao !== NULL)
				{
					$SQL .= "'".$Evento->DataInclusao."',";
				}
				if($Evento->UsuarioID !== NULL)
				{
					$SQL .= $Evento->UsuarioID.",";
				}
				if($Evento->ClassificacaoEtaria !== NULL)
				{
					$SQL .= $Evento->ClassificacaoEtaria.",";
				}
				if($Evento->Elenco !== NULL)
				{
					$SQL .= $Evento->Elenco.",";
				}
				if($Evento->EquipeDirecao !== NULL)
				{
					$SQL .= $Evento->EquipeDirecao.",";
				}
				if($Evento->HoraAbertura !== NULL)
				{
					$SQL .= $Evento->HoraAbertura.",";
				}
				if($Evento->Ativo !== NULL)
				{
					$SQL .= $Evento->Ativo.",";
				}
			$SQL = substr($SQL,0,-1);
			$SQL .=")";
		}
		else
		{
			$SQL = "UPDATE " . PREFIXO_TABELA . "evento SET ";
			if($Evento->Nome !== NULL)
			{
				$SQL .= "Nome = '".$Evento->Nome."',";
			}
			if($Evento->CategoriaID !== NULL)
			{
				$SQL .= "CategoriaID = ".$Evento->CategoriaID.",";
			}
			if($Evento->DataInicio !== NULL)
			{
				$SQL .= "DataInicio = '".$Evento->DataInicio."',";
			}
			if($Evento->DataFim !== NULL)
			{
				$SQL .= "DataFim = '".$Evento->DataFim."',";
			}
			if($Evento->HoraInicio !== NULL)
			{
				$SQL .= "HoraInicio = ".$Evento->HoraInicio.",";
			}
			if($Evento->HoraFim !== NULL)
			{
				$SQL .= "HoraFim = ".$Evento->HoraFim.",";
			}
			if($Evento->LocalID !== NULL)
			{
				$SQL .= "LocalID = ".$Evento->LocalID.",";
			}
			if($Evento->Duracao !== NULL)
			{
				$SQL .= "Duracao = '".$Evento->Duracao."',";
			}
			if($Evento->DescricaoGeral !== NULL)
			{
				$SQL .= "DescricaoGeral = ".$Evento->DescricaoGeral.",";
			}
			if($Evento->DataInclusao !== NULL)
			{
				$SQL .= "DataInclusao = '".$Evento->DataInclusao."',";
			}
			if($Evento->UsuarioID !== NULL)
			{
				$SQL .= "UsuarioID = ".$Evento->UsuarioID.",";
			}
			if($Evento->ClassificacaoEtaria !== NULL)
			{
				$SQL .= "ClassificacaoEtaria = ".$Evento->ClassificacaoEtaria.",";
			}
			if($Evento->Elenco !== NULL)
			{
				$SQL .= "Elenco = ".$Evento->Elenco.",";
			}
			if($Evento->EquipeDirecao !== NULL)
			{
				$SQL .= "EquipeDirecao = ".$Evento->EquipeDirecao.",";
			}
			if($Evento->HoraAbertura !== NULL)
			{
				$SQL .= "HoraAbertura = ".$Evento->HoraAbertura.",";
			}
			if($Evento->Ativo !== NULL)
			{
				$SQL .= "Ativo = ".$Evento->Ativo.",";
			}

			$SQL = substr($SQL,0,-1);
			$SQL .= " WHERE EventoID = " . $Evento->EventoID;
		}

		$resultado = $this->Executar($SQL);
		if($Evento->EventoID === NULL)
		{
			$Evento->EventoID = $this->Conexao->Insert_ID();
		}

		return $Evento;
	}

	/**
	 * @method ObterClausulaWhere
	 *
	 * @author   ()
	 * @param object $Evento
	 *
	 * @return  object
	 */
	private function ObterClausulaWhere($Evento)
	{
		// Evento
		if($Evento->EventoID !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.EventoID = " . $Evento->EventoID;
		}
		if($Evento->Nome !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.Nome = '" . $Evento->Nome . "'";
		}
		if($Evento->Destaque !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.Destaque = '" . $Evento->Destaque . "'";
		}
		if($Evento->CategoriaID !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.CategoriaID = " . $Evento->CategoriaID;
		}
		if($Evento->DataInicio !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataInicio = '" . $Evento->DataInicio . "'";
		}
		if($Evento->DataInicioMenor !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataInicio <= '" . $Evento->DataInicioMenor . "'";
		}
		if($Evento->DataInicioMaior !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataInicio >= '" . $Evento->DataInicioMaior . "'";
		}
		if($Evento->DataInicioInicial !== NULL && $Evento->DataInicioFinal !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataInicio BETWEEN '" . $Evento->DataInicioInicial . "' AND '" . $Evento->DataInicioFinal . "'";
		}
		if($Evento->DataFim !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataFim = '" . $Evento->DataFim . "'";
		}
		if($Evento->DataFimMenor !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataFim <= '" . $Evento->DataFimMenor . "'";
		}
		if($Evento->DataFimMaior !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataFim >= '" . $Evento->DataFimMaior . "'";
		}
		if($Evento->DataFimInicial !== NULL && $Evento->DataFimFinal !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataFim BETWEEN '" . $Evento->DataFimInicial . "' AND '" . $Evento->DataFimFinal . "'";
		}
		if($Evento->HoraInicio !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.HoraInicio = " . $Evento->HoraInicio;
		}
		if($Evento->HoraFim !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.HoraFim = " . $Evento->HoraFim;
		}
		if($Evento->LocalID !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.LocalID = " . $Evento->LocalID;
		}
		if($Evento->Duracao !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.Duracao = '" . $Evento->Duracao . "'";
		}
		if($Evento->DescricaoGeral !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DescricaoGeral = " . $Evento->DescricaoGeral;
		}
		if($Evento->DataInclusao !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataInclusao = '" . $Evento->DataInclusao . "'";
		}
		if($Evento->DataInclusaoMenor !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataInclusao <= '" . $Evento->DataInclusaoMenor . "'";
		}
		if($Evento->DataInclusaoMaior !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataInclusao >= '" . $Evento->DataInclusaoMaior . "'";
		}
		if($Evento->DataInclusaoInicial !== NULL && $Evento->DataInclusaoFinal !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.DataInclusao BETWEEN '" . $Evento->DataInclusaoInicial . "' AND '" . $Evento->DataInclusaoFinal . "'";
		}
		if($Evento->UsuarioID !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.UsuarioID = " . $Evento->UsuarioID;
		}
		if($Evento->ClassificacaoEtaria !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.ClassificacaoEtaria = " . $Evento->ClassificacaoEtaria;
		}
		if($Evento->Elenco !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.Elenco = " . $Evento->Elenco;
		}
		if($Evento->EquipeDirecao !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.EquipeDirecao = " . $Evento->EquipeDirecao;
		}
		if($Evento->HoraAbertura !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.HoraAbertura = " . $Evento->HoraAbertura;
		}
		if($Evento->Ativo !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "evento.Ativo = " . $Evento->Ativo;
		}
		if($Evento->MunicipioID !== NULL)
		{
			$colecaoCondicao[] = "  " . PREFIXO_TABELA . "dmmunicipio.MunicipioID = " . $Evento->MunicipioID;
		}
		// Para quest�es de Busca
		if($Evento->Busca !== NULL)
		{
			$busca = " (";
			$busca .= PREFIXO_TABELA . "evento.Nome REGEXP '".RegexpParaBusca($Evento->Busca)."'";
			$busca .= ") ";
			$colecaoCondicao[] = $busca;
		}

		$SQL = ((count($colecaoCondicao)) ? " WHERE " .  implode(" AND ", $colecaoCondicao)  : "" );

		return $SQL;
	}

}
?>